﻿using System;
using CloudStorage.API;
using CloudStorage.API.Blobs;

namespace CloudStorage.Factories
{
  /// <summary>
  /// Factory API for creating Blob Storage.
  /// </summary>
  public interface IBlobStorageAccountFactory
  {
    /// <summary>
    /// Create and return a <see cref="IBlobStorageAccount"/>
    /// </summary>
    /// <param name="baseUri">The Uri of the blob storage</param>
    /// <param name="accountName">The account name in the blob storage</param>
    /// <param name="base64Key">The secret key to access the blob storage</param>
    /// <returns><see cref="IBlobStorageAccount"/></returns>
		IBlobStorageAccount GetBlobStorage(Uri baseUri, string accountName, string base64Key);

    /// <summary>
    /// Create and return a <see cref="IBlobStorageAccount"/>
    /// </summary>
    /// <param name="storageAccountInfo"><see cref="IStorageAccountInfo"/></param>
    /// <returns><see cref="IBlobStorageAccount"/></returns>
    IBlobStorageAccount GetBlobStorage(IStorageAccountInfo storageAccountInfo);
  }
}